<?php

$dbms = 'mysql';      //数据库服务器类型
$host = '172.18.0.4'; //数据库服务器主机名/IP --- 容器的ID是会变化的，要确认清楚，否则会连接失败！
$port = 3306;         //数据库服务器端口
$dbName = 'test';     //使用的数据库
$user = 'root';       //数据库服务器连接用户名
$pass = 'root';       //对应的密码
// $dsn = "$dbms:host=$host;$port;dbname=$dbName"; // 下面的查询一直报错的原因居然是因为端口，端口号本身是没有错误的，应该是配置没写对. 但是在初始化一个PDO对象时，并没有报错.
// 正确的配置方式
$dsn = "$dbms:host=$host;port=$port;dbname=$dbName";
// 或者省略
// $dsn = "$dbms:host=$host;dbname=$dbName";

try {
    $dbh = new PDO($dsn, $user, $pass, [
        PDO::ATTR_PERSISTENT => true
    ]); // 使用长连接初始化一个PDO对象, 即 持久化连接 
    // 注意：如果想使用持久连接，必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性，则驱动程序将不会使用持久连接。

    echo "Connection to server <span style='color: green;'>successfully</sapn> <br/>";
    
    // 你还可以进行一次搜索操作
    $dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // 设置列名/字段名都小写
    $ret = $dbh->query('SELECT * from test');
    $ret->setFetchMode(PDO::FETCH_ASSOC);

    foreach ($ret as $row) {
        var_export($row);
    }
    
    sleep(2);

    // release resource 即 close conn
    $dbh = null;
    $ret = null;
} catch (PDOException $e) {
    die("Error!: {$e->getMessage()} <br/>");
}